#pragma once

#include <iostream>
#include <memory>
#include "Calculator.hpp"
using namespace std;

class Factory
{
public:
    shared_ptr<Calculator::Request> BuildRequest()
    {
        shared_ptr<Calculator::Request> ret = make_shared<Calculator::Request>();
        return ret;
    }
    shared_ptr<Calculator::Request> BuildRequest(int data_x, int data_y, int oper)
    {
        shared_ptr<Calculator::Request> ret = make_shared<Calculator::Request>(data_x, data_y, oper);
        return ret;
    }
    shared_ptr<Calculator::Response> BuildResponse()
    {
        shared_ptr<Calculator::Response> ret = make_shared<Calculator::Response>();
        return ret;
    }
    shared_ptr<Calculator::Response> BuildResponse(int result, int code)
    {
        shared_ptr<Calculator::Response> ret = make_shared<Calculator::Response>(result, code);
        return ret;
    }
};